﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                    xmlns:Contract="clr-namespace:GBlason.ViewModel.Contract" mc:Ignorable="d">

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="..\Themes\Brushes.xaml"/>
    </ResourceDictionary.MergedDictionaries>

    <Style TargetType="{x:Type TreeView}" x:Key="{x:Type TreeView}">
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TreeView}">
                    <Border Name="Border"
                                CornerRadius="0" 
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}" >
                        <ScrollViewer Focusable="False"
                                          CanContentScroll="False"
                                          Padding="4">
                            <ItemsPresenter/>
                        </ScrollViewer>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!--Le petit bouton qui permet de savoir quand un treeview item est expanded ou pas-->
    <Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
        <Setter Property="Focusable" Value="False"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <Grid Width="15"
                              Height="13"
                              Background="Transparent">
                        <Path x:Name="ExpandPath"
                                  HorizontalAlignment="Left"
                                  VerticalAlignment="Center"
                                  Margin="1,1,1,1"
                                  Fill="{TemplateBinding Foreground}"
                                  Data="M 4 0 L 8 4 L 4 8 Z"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked"
                                     Value="True">
                            <Setter Property="Data"
                                        TargetName="ExpandPath"
                                        Value="M 0 4 L 8 4 L 4 8 Z"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!-- Sélection au clavier -->
    <Style x:Key="TreeViewItemFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border>
                        <Rectangle Margin="0,0,0,0"
                                   StrokeThickness="5"
                                   Stroke="Black"
                                   StrokeDashArray="1 2"
                                   Opacity="0"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <!--Réel treeviewItem-->
    <Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
        <Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
        <Setter Property="Padding" Value="0"/>
        <Setter Property="Foreground" Value="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
        <Setter Property="FocusVisualStyle" Value="{StaticResource TreeViewItemFocusVisual}"/>
        <Setter Property="IsSelected" Value="{Binding Path=IsSelected}"/>
        <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TreeViewItem}">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <Grid x:Name="SubGrid" Grid.Row="0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition MinWidth="19"
                                                  Width="Auto"/>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Border Name="Bd"
                                    Grid.ColumnSpan="4"
                                    BorderBrush="Transparent"
                                    BorderThickness="1"
                                    Padding="0"
                                    Margin="0">
                                <Grid>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="0.5*"/>
                                        <RowDefinition Height="0.5*"/>
                                    </Grid.RowDefinitions>
                                    <Border HorizontalAlignment="Stretch" Margin="0" Padding="0"
                                            Grid.RowSpan="2" Grid.ColumnSpan="4"
                                            Name="glow" Opacity="0" Background="{StaticResource GlowBrush}">
                                    </Border>
                                    <Border HorizontalAlignment="Stretch" Margin="0" Padding="0"
                                            Grid.ColumnSpan="4" Name="glossy"
                                            Opacity="0" Background="{StaticResource GlossyBrush}">
                                    </Border>
                                </Grid>
                            </Border>
                            <ToggleButton x:Name="Expander"
                                          Grid.Column="0"
                                          Grid.Row="0"
                                          Style="{StaticResource ExpandCollapseToggleStyle}"
                                          Margin="2"
                                          IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"
                                          ClickMode="Press"/>
                            <Border Name="ContentBorder"
                                    Grid.Column="1"
                                    Margin="1">
                                <ContentPresenter x:Name="PART_Header"
                                                  ContentSource="Header"
                                                  Margin="0,2"
                                                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>

                            </Border>
                        </Grid>

                        <ItemsPresenter x:Name="ItemsHost"
                                            Grid.Row="1"
                                            Margin="20,0,0,0"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="false">
                            <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
                        </Trigger>
                        <Trigger Property="HasItems" Value="false">
                            <Setter TargetName="Expander" Property="Visibility" Value="Hidden"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="HasHeader" Value="false"/>
                                <Condition Property="Width" Value="Auto"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="PART_Header" Property="MinWidth" Value="75"/>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="HasHeader" Value="false"/>
                                <Condition Property="Height" Value="Auto"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="PART_Header" Property="MinHeight" Value="19"/>
                        </MultiTrigger>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Bd" Property="Background" Value="{StaticResource ResourceKey=DarkYellowBackgroundBrush}"/>
                            <Setter TargetName="glow" Property="Opacity" Value="1"/>
                            <Setter TargetName="glossy" Property="Opacity" Value="1"/>
                            <Setter TargetName="Bd" Property="BorderBrush" Value="{StaticResource ResourceKey=LightYellowBorderBrush}"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected" Value="true"/>
                                <Condition Property="IsSelectionActive" Value="false"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="Bd" Property="Background" Value="{StaticResource ResourceKey=SelectedGrayBackgroundBrush}"/>
                            <Setter TargetName="glow" Property="Opacity" Value="1"/>
                            <Setter TargetName="glossy" Property="Opacity" Value="1"/>
                            <Setter TargetName="Bd" Property="BorderBrush" Value="{StaticResource ResourceKey=SelectedGrayBorderBrush}"/>
                        </MultiTrigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                        <Trigger SourceName="SubGrid" Property="IsMouseOver" Value="True">
                            <Setter TargetName="Bd" Property="Background" Value="{StaticResource ResourceKey=YellowBackgroundBrush}"/>
                            <Setter TargetName="glow" Property="Opacity" Value="1"/>
                            <Setter TargetName="glossy" Property="Opacity" Value="1"/>
                            <Setter TargetName="Bd" Property="BorderBrush" Value="{StaticResource ResourceKey=DarkYellowBorderBrush}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>